var program = require("commander");
program
  .version("0.0.1")
  .description("a test cli program")
  .option("-n, --name <name>", "your name", "GK")
  .option("-a, --age <age>", "your age", "22")
  .option("-e, --enjoy [enjoy]")
  .action(() => {
    console.log(program.opts());
  });
program.parse(process.argv);

// try node index.js
// node index.js -b
// node index.js -a 33
// node index.js -a 33 -n zhangpeng
// node index.js -e

// 这个commander作用就是帮助解析用户的录入（process.argv），然后作相应的操作。
// 直接运行node index.js那么获取到的就是默认值{ name: GK, age:22 }。同时还有个隐藏值enjoy false
// node index.js -b。因为没有-b这个选项，所以会自动输出报错error: unknow option '-b'
// node index.js -a 因为没有录入参数，所以会报错error: option '-a, --age <age>' argument missing
// node index.js -a 22 输出{ name: 'GK', age: '22' }。可以看到age被修改了。
// node index.js -a 33 -n zhangpeng 输出{ name: 'zhangpeng', age: '22' }两个参数同时被修改了
// node index.js -e 输出{ name: 'GK', age: '22', enjoy: true }。增加了布尔值enjoy
